package re

import (
	"fmt"
)

type RuntimeException struct {
	Module  string
	Message string

	internal error
}

func (re *RuntimeException) Error() string {
	msg := re.Message
	mod := re.Module
	if msg == "" && re.internal != nil {
		msg = re.internal.Error()
	}
	if mod == "" {
		mod = "Runtime"
	}
	return fmt.Sprintf("%s: %s", mod, msg)
}

func Wrap(mod string, err error) error {
	return &RuntimeException{Module: mod, Message: err.Error(), internal: err}
}
